﻿using System;
using System.Collections.ObjectModel;
using Renci.Data.Interop.OpenGIS.Ic.Ism;

namespace Renci.Data.Interop.OpenGIS.Tml
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.opengis.net/tml")]
    [System.Xml.Serialization.XmlRootAttribute("clusterDesc", Namespace = "http://www.opengis.net/tml", IsNullable = false)]
    public class ClusterDescription
    {
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("description")]
        public BindType Description { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("idMapping")]
        public ClusterDescriptionIdMapping IdMapping { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("clusterProperties")]
        public ClusterDescriptionClusterProperties ClusterProperties { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("headerAttrib", IsNullable = false)]
        [System.Xml.Serialization.XmlArrayAttribute("binHeaderEncode", IsNullable = false)]
        public Collection<ClusterDescriptionHeaderAttribute> BinHeaderEncode { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("timeTag")]
        public ClusterDescriptionTimeTag TimeTag { get; set; }

        private Collection<clusterDescDataUnitEncoding> _dataUnitEncoding = new Collection<clusterDescDataUnitEncoding>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("dataUnitEncoding")]
        public Collection<clusterDescDataUnitEncoding> DataUnitEncoding
        {
            get
            {
                return this._dataUnitEncoding;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("numCfInCluster")]
        public BindType NumCfInCluster { get; set; }

        private Collection<ClusterDescriptionTransducerSequenceSequence> _transSeq = new Collection<ClusterDescriptionTransducerSequenceSequence>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("transSeq")]
        public Collection<ClusterDescriptionTransducerSequenceSequence> TransSeq
        {
            get
            {
                return this._transSeq;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("name")]
        public string Name { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("uid", DataType = "anyURI")]
        public string Uid { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("uidRef", DataType = "anyURI")]
        public string UidRef { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("classification", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public ClassificationType Classification { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ClassificationSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("ownerProducer", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string OwnerProducer { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("SCIcontrols", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string SciControls { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("SARIdentifier", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string SarIdentifier { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("disseminationControls", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string DisseminationControls { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("FGIsourceOpen", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string FgiSourceOpen { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("FGIsourceProtected", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string FgiSourceProtected { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("releasableTo", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string ReleasableTo { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("nonICmarkings", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string NonIcMarkings { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("classifiedBy", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public string ClassifiedBy { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("classificationReason", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public string ClassificationReason { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("derivedFrom", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public string DerivedFrom { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("declassDate", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "date")]
        public DateTime DeclassDate { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool DeclassDateSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("declassEvent", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public string DeclassEvent { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("declassException", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string DeclassException { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("typeOfExemptedSource", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "NMTOKENS")]
        public string TypeOfExemptedSource { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("dateOfExemptedSource", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2", DataType = "date")]
        public DateTime DateOfExemptedSource { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool DateOfExemptedSourceSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("declassManualReview", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "urn:us:gov:ic:ism:v2")]
        public bool DeclassManualReview { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool DeclassManualReviewSpecified { get; set; }
    }
}
